//
//  AutoID.swift
//  imprint
//
//  Created by 小柠檬🍋 on 2025/3/14.
//

import Foundation
import SwiftUI
//以下方法是处理自动。autoID的功能，方便在每个对应的试图获取id,
// 在view中使用。View().autoID(data.id)  进行绑定你的id
// 然后在对应的View里面，可以用该方法获取该值
//    @Environment(\.viewID) private var viewID // 从环境获取 ID

// 定义环境键
struct ViewIDKey: EnvironmentKey {
    static let defaultValue: String? = nil
}

// 扩展环境值
extension EnvironmentValues {
    var viewID: String? {
        get { self[ViewIDKey.self] }
        set { self[ViewIDKey.self] = newValue }
    }
}

struct AutoIDModifier: ViewModifier {
    let id: String
    
    func body(content: Content) -> some View {
        content
            .id(id) // SwiftUI 原生 ID
            .environment(\.viewID, id) // 注入环境变量
    }
}

// 扩展 View 简化调用
extension View {
    func autoID(_ id: String) -> some View {
        self.modifier(AutoIDModifier(id: id))
    }
}
